/*
 * @Author: zhang zhijiang 2824735304@qq.com
 * @Date: 2025-03-04 16:52:16
 * @LastEditors: zhang zhijiang 2824735304@qq.com
 * @LastEditTime: 2025-03-04 20:02:51
 * @FilePath: /linux/test_3_4/test.cpp
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#include<iostream>
#include<signal.h>
#include<cstring>
#include <sys/types.h>
 #include <sys/types.h>
       #include <sys/wait.h>
       #include <unistd.h>
using namespace std;
void handler(int  signno)
{   pid_t rid ;
    cout<<"catch a sign"<<signno<<endl;
    while( (rid = waitpid(-1,nullptr,0))>0)
    {
        cout<<rid<<":quit successfully"<<endl;
    }
}
int main()
{   signal(17,handler);
   
        pid_t pid = fork();
    if(pid==0)
    {
        while(true)
        {
 cout<<"I am  a child"<<getpid()<<"  parent:"<<  getppid()<<endl;
 sleep(5);
 break;
        }
        exit(0); cout<< "process quit normally"<<endl;
    }
   
    while(true)
    {
        cout<<"I am parent :"<<getpid()<<endl;
        sleep(1);
    }
    
    return 0;
}
// void handler(int signno)
// {
//     cout<<"catch a sign"<<signno<<endl;
// }
// void printpending()
// {
//     sigset_t set;
//     sigpending(&set);
//     for(int signo = 1;signo<=31;signo++)
//     {
//         if(sigismember(&set,signo)) cout<<"1";
//         else
//         cout<<"0";

//     }
//     cout<<"\n";
// }
// int main()
// {
//     struct sigaction act;
//     struct sigaction oact;
//     memset(&act,0,sizeof(act));
//     memset(&oact,0,sizeof(oact));
//     sigemptyset(&act.sa_mask);
//     sigaddset(&act.sa_mask,1);
//      sigaddset(&act.sa_mask,3);
//       sigaddset(&act.sa_mask,4);
       
//     act.sa_handler = handler;
//     sigaction(2,&act,&oact);
    
//     return 0;
// }